package business.semestre;

import java.util.List;


import auth.service.User;

import entites.Domaine;
import entites.GroupeUe;
import entites.Semestre;

/**
 * @author Olivier SENENTZ
 * @version 0.1
 */
public interface ISemestreManager  {
	/**
	 * Supprimer un semestre
	 * @param semestre le semestre a supprimer
	 * @throws SemestreManagerException
	 */
	public void deleteSemestre(Semestre semestre, User user, Domaine domaine) throws SemestreManagerException;
	/**
	 * Ajouter un semestre
	 * @param semestre le semestre a rajouter
	 * @param listGroupeUe la liste des groupe d unite d enseignement du semestre
	 * @param user l'utilisateur
	 * @throws SemestreManagerException
	 */
	public void insertSemestre(Semestre semestre, List<GroupeUe> listGroupeUe, User user,Domaine domaine)throws SemestreManagerException;	
	/**
	 * recuperer les infos du tableau de bord
	 * @param user l'utilisateur
	 * @param domaine le domaine
	 * @return la liste des semstres de l'utilisateur
	 * @throws SemestreManagerException
	 */
	public List<Semestre> showDashBoardSemestre(User user,Domaine domaine)throws SemestreManagerException;
	/**
	 * Mettre a jour un Semestre
	 * @param semestre le semestre
	 * @param user l'utilisateur
	 * @throws SemestreManagerException
	 */
	public void updateSemestre(Semestre semestre, User user) throws SemestreManagerException ;
	/**
	 * Mettre a jour un semestre et les groupes UE de celui ci
	 * @param semestre le semestre a mettre a jour
	 * @param listGroupeUe liste des groupes UE du semestre
	 * @param user l'utilisateur
	 * @param domaine le domaine dans lequel est le semestre
	 * @throws SemestreManagerException
	 */
	public void updateSemestre(Semestre semestre, List<GroupeUe> listGroupeUe, User user,Domaine domaine) throws SemestreManagerException ;
	/**
	 * valider un semestre
	 * @param semestre le semestre a verifier
	 * @param user l'utilisateur
	 * @param listGroupeUe
	 * @throws SemestreManagerException
	 */
	public void validation(Semestre semestre, List<GroupeUe> listGroupeUe, User user)throws SemestreManagerException;
}
